package tutorial.service;

import jp.fores.midori.server.annotation.RPCService;
import tutorial.dto.CalcResultDto;

/**
 * 四則演算のRPCのテスト用のサービス。<br>
 */
@RPCService
public class CalcService {
	//==========================================================
	//メソッド

	//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
	//通常のメソッド

	/**
	 * 足し算を行います。
	 *
	 * @param num1 数値1
	 * @param num2 数値2
	 * @return 計算結果
	 */
	public int addition(int num1, int num2) {
		System.out.println("足し算を行います。num1=" + num1 + ", num2=" + num2);

		//足し算を行った結果を返す
		return num1 + num2;
	}

	/**
	 * 引き算を行います。
	 *
	 * @param num1 数値1
	 * @param num2 数値2
	 * @return 計算結果
	 */
	public int subtraction(int num1, int num2) {
		System.out.println("引き算を行います。num1=" + num1 + ", num2=" + num2);

		//引き算を行った結果を返す
		return num1 - num2;
	}

	/**
	 * かけ算を行います。
	 *
	 * @param num1 数値1
	 * @param num2 数値2
	 * @return 計算結果
	 */
	public int multiplication(int num1, int num2) {
		System.out.println("かけ算を行います。num1=" + num1 + ", num2=" + num2);

		//かけ算を行った結果を返す
		return num1 * num2;
	}

	/**
	 * 割り算を行います。
	 *
	 * @param num1 数値1
	 * @param num2 数値2
	 * @return 計算結果
	 */
	public int division(int num1, int num2) {
		System.out.println("割り算を行います。num1=" + num1 + ", num2=" + num2);

		//割り算を行った結果を返す
		return num1 / num2;
	}

	/**
	 * 四則演算をまとめて行います。
	 *
	 * @param num1 数値1
	 * @param num2 数値2
	 * @return 計算結果
	 */
	public CalcResultDto operation(int num1, int num2) {
		System.out.println("四則演算をまとめて行います。num1=" + num1 + ", num2=" + num2);

		//四則演算の結果を格納するDTOクラスのインスタンスを生成
		CalcResultDto dto = new CalcResultDto();

		//四則演算のそれぞれの結果をDTOに設定する
		dto.addition = num1 + num2;
		dto.subtraction = num1 - num2;
		dto.multiplication = num1 * num2;
		dto.division = num1 / num2;

		//作成したDTOを返す
		return dto;
	}
}
